home *** CD-ROM | disk | FTP | other *** search
- package javax.swing.plaf.basic;
-
- import java.awt.Component;
- import java.awt.Container;
- import java.awt.Window;
- import java.awt.event.ComponentEvent;
- import java.awt.event.ComponentListener;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseListener;
- import java.awt.event.MouseMotionListener;
- import java.awt.event.WindowEvent;
- import java.awt.event.WindowListener;
- import java.util.EventObject;
- import java.util.Vector;
- import javax.swing.JMenuBar;
- import javax.swing.JPopupMenu;
- import javax.swing.MenuElement;
- import javax.swing.MenuSelectionManager;
- import javax.swing.event.ChangeEvent;
- import javax.swing.event.ChangeListener;
-
- class BasicPopupMenuUI$MouseGrabber implements MouseListener, MouseMotionListener, WindowListener, ComponentListener, ChangeListener {
- Vector grabbed = new Vector();
- MenuElement lastGrabbed = null;
- boolean lastGrabbedMenuBarChild = false;
- MenuElement[] lastPathSelected = new MenuElement[0];
-
- public BasicPopupMenuUI$MouseGrabber() {
- MenuSelectionManager var1 = MenuSelectionManager.defaultManager();
- var1.addChangeListener(this);
- }
-
- void cancelPopupMenu() {
- MenuSelectionManager var1 = MenuSelectionManager.defaultManager();
- MenuElement[] var2 = var1.getSelectedPath();
- if (this.lastGrabbed == this.getFirstPopup()) {
- MenuSelectionManager.defaultManager().clearSelectedPath();
- this.ungrabContainers();
- } else {
- this.lastGrabbed = this.getFirstPopup();
- if (var2[0] instanceof JMenuBar) {
- this.lastGrabbedMenuBarChild = true;
- } else {
- this.lastGrabbedMenuBarChild = false;
- }
- }
-
- }
-
- public void componentHidden(ComponentEvent var1) {
- this.cancelPopupMenu();
- }
-
- public void componentMoved(ComponentEvent var1) {
- this.cancelPopupMenu();
- }
-
- public void componentResized(ComponentEvent var1) {
- this.cancelPopupMenu();
- }
-
- public void componentShown(ComponentEvent var1) {
- this.cancelPopupMenu();
- }
-
- private MenuElement getFirstPopup() {
- MenuSelectionManager var1 = MenuSelectionManager.defaultManager();
- MenuElement[] var2 = var1.getSelectedPath();
- MenuElement var3 = null;
-
- for(int var4 = 0; var3 == null && var4 < var2.length; ++var4) {
- if (var2[var4] instanceof JPopupMenu) {
- var3 = var2[var4];
- }
- }
-
- return var3;
- }
-
- void grabContainer(Container var1, Component var2) {
- if (var1 != var2) {
- MenuSelectionManager var3 = MenuSelectionManager.defaultManager();
- MenuElement[] var4 = var3.getSelectedPath();
- this.lastGrabbed = this.getFirstPopup();
- if (var4[0] instanceof JMenuBar) {
- this.lastGrabbedMenuBarChild = true;
- } else {
- this.lastGrabbedMenuBarChild = false;
- }
-
- if (var1 instanceof Window) {
- ((Window)var1).addWindowListener(this);
- ((Window)var1).addComponentListener(this);
- this.grabbed.addElement(var1);
- }
-
- Object var5 = ((Component)var1).getTreeLock();
- synchronized(var5){}
-
- try {
- int var7 = var1.getComponentCount();
- Component[] var8 = var1.getComponents();
-
- for(int var9 = 0; var9 < var7; ++var9) {
- Component var10 = var8[var9];
- if (var10.isVisible()) {
- var10.addMouseListener(this);
- var10.addMouseMotionListener(this);
- this.grabbed.addElement(var10);
- if (var10 instanceof Container) {
- Container var11 = (Container)var10;
- this.grabContainer(var11, var2);
- }
- }
- }
- } catch (Throwable var13) {
- throw var13;
- }
-
- }
- }
-
- public void mouseClicked(MouseEvent var1) {
- }
-
- public void mouseDragged(MouseEvent var1) {
- MenuSelectionManager.defaultManager().processMouseEvent(var1);
- }
-
- public void mouseEntered(MouseEvent var1) {
- }
-
- public void mouseExited(MouseEvent var1) {
- }
-
- public void mouseMoved(MouseEvent var1) {
- }
-
- public void mousePressed(MouseEvent var1) {
- Component var2 = (Component)((EventObject)var1).getSource();
- MenuSelectionManager var3 = MenuSelectionManager.defaultManager();
- this.cancelPopupMenu();
- }
-
- public void mouseReleased(MouseEvent var1) {
- MenuSelectionManager.defaultManager().processMouseEvent(var1);
- }
-
- private void requestAddGrab(Component var1) {
- Window var2 = BasicPopupMenuUI.access$0(var1);
- MenuSelectionManager var3 = MenuSelectionManager.defaultManager();
- MenuElement[] var4 = var3.getSelectedPath();
- Component var5 = null;
-
- for(int var6 = 0; var5 == null && var6 < var4.length; ++var6) {
- if (var4[var6] instanceof JPopupMenu) {
- var5 = var4[var6].getComponent();
- }
- }
-
- this.grabContainer(var2, var5);
- }
-
- private void requestRemoveGrab() {
- this.ungrabContainers();
- }
-
- public void stateChanged(ChangeEvent var1) {
- MenuSelectionManager var2 = MenuSelectionManager.defaultManager();
- MenuElement[] var3 = var2.getSelectedPath();
- if (this.lastPathSelected.length == 0 && var3.length != 0) {
- Component var4 = var3[0].getComponent();
- if (var4 instanceof JPopupMenu) {
- var4 = ((JPopupMenu)var4).getInvoker();
- }
-
- this.requestAddGrab(var4);
- }
-
- if (this.lastPathSelected.length != 0 && var3.length == 0) {
- this.requestRemoveGrab();
- }
-
- if (var3 != null && var3.length > 2 && var3[0] instanceof JMenuBar && this.lastGrabbedMenuBarChild && this.lastGrabbed != this.getFirstPopup()) {
- this.lastGrabbed = this.getFirstPopup();
- if (var3[0] instanceof JMenuBar) {
- this.lastGrabbedMenuBarChild = true;
- } else {
- this.lastGrabbedMenuBarChild = false;
- }
- }
-
- this.lastPathSelected = var3;
- }
-
- void ungrabContainers() {
- int var1 = 0;
-
- for(int var2 = this.grabbed.size(); var1 < var2; ++var1) {
- Component var3 = (Component)this.grabbed.elementAt(var1);
- if (var3 instanceof Window) {
- ((Window)var3).removeWindowListener(this);
- ((Window)var3).removeComponentListener(this);
- } else {
- var3.removeMouseListener(this);
- var3.removeMouseMotionListener(this);
- }
- }
-
- this.grabbed = new Vector();
- this.lastGrabbed = null;
- this.lastGrabbedMenuBarChild = false;
- }
-
- public void windowActivated(WindowEvent var1) {
- }
-
- public void windowClosed(WindowEvent var1) {
- this.cancelPopupMenu();
- }
-
- public void windowClosing(WindowEvent var1) {
- this.cancelPopupMenu();
- }
-
- public void windowDeactivated(WindowEvent var1) {
- }
-
- public void windowDeiconified(WindowEvent var1) {
- }
-
- public void windowIconified(WindowEvent var1) {
- this.cancelPopupMenu();
- }
-
- public void windowOpened(WindowEvent var1) {
- }
- }
-